package com.kerbores.utils.collection;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

/**
 * @author 王贵源
 *
 *         create at 2015年4月26日 上午9:29:49
 */
public class Lists {
	/**
	 * 去重
	 * 
	 * @param list
	 *            源列表
	 * @return 去重之后的结果
	 */
	public static List removeDuplicateWithOrder(List list) {
		Set set = new HashSet();
		List newList = new ArrayList();
		for (Iterator iter = list.iterator(); iter.hasNext();) {
			Object element = iter.next();
			if (set.add(element))
				newList.add(element);
		}
		return newList;
	}

	public static <T> List<T> removeObj(List<T> l, final T o) {
		List<T> target = newArrayList();
		for (T object : l) {
			if (!o.equals(object)) {
				target.add(object);
			}
		}
		return target;
	}

	/**
	 * 创建list
	 * 
	 * @return
	 */
	public static <E> ArrayList<E> newArrayList() {
		return new ArrayList();
	}

	/**
	 * 连接列表数据
	 * 
	 * @param list
	 *            源列表
	 * @param spliter
	 *            分隔符
	 * @return 列表数据连接串 如:<br>
	 *         List<Integer> list = Lists.newArrayList();<br>
	 *         list.add(1);<br>
	 *         list.add(2);<br>
	 *         list.add(3);<br>
	 *         Lists.connat(list,",")将返回 1,2,3
	 */
	public static String connat(List list, String spliter) {
		if (list == null || list.size() == 0) {
			return null;
		}
		StringBuilder builder = new StringBuilder();
		for (Object object : list) {
			builder.append(object + spliter);
		}
		return builder.substring(0, builder.length() - spliter.length());
	}
}
